#! /usr/bin/env/pyrhon3
# coding:utf-8
'''
    功能：判断密码强弱
    作者：王楠
    版本：2.0
    日期：2020/02/29
    新增：1.0：判断密码强度
         2.0：增加设置密码限制
'''


def check_number_exist(pwd_str):
    '''
        函数：判断是否含有数字,默认不含有
    '''
    number_exist = False
    for x in pwd_str:
        if x.isnumeric():
            number_exist = True
            break
    return number_exist


def check_letter_exist(pwd_str):
    '''
        函数：判断是否含有字母，默认不含有
    '''
    letter_exist = False
    for x in pwd_str:
        if x.isalpha():
            letter_exist = True
            break
    return letter_exist


def pwd_strength_main():
    # 密码强度
    strength_level = 0
    pwd_str = input('请输入密码：')
    count = 0
    while count < 3:
        if len(pwd_str) >= 8:
            strength_level += 1
        else:
            print('密码强度小于8')
        if check_number_exist(pwd_str):
            strength_level += 1
        else:
            print('密码要求包含数字')
        if check_letter_exist(pwd_str):
            strength_level += 1
        else:
            print('密码要求包含字母')
        # 密码强度水平
        print('密码强度水平：', strength_level)
        if strength_level == 3:
            print('密码强度合格')
            break
        else:
            print('密码强度不合格，请再次设置')
            pwd_str = input('请输入密码：')
            count += 1
            strength_level = 0
    if count >= 3:
        print('密码设置超过次数')
        is_quit = input('是否重新设置[y/n]:')
        if is_quit == 'y':
            pwd_strength_main()


if __name__ == '__main__':
    pwd_strength_main()
